﻿#define _CRT_SECURE_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <assert.h>

//一；
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	memcpy(arr2, arr, 40);
//	int i = 0;
//	for(i=0;i<10;i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}

//void* my_memcpy(void* dest, const void* src, size_t num)  //这里使用了const 是希望src不被修改，保证数据的完整性
//{
//	void* ret = dest;   // 由于dest自增无法返回初始值，所以定义ret函数达到返回初始值的目的
//	assert(dest && src); // 用assert断言，防止指针为空指针 ， 起到防御性作用
//	while (num--)       //  字节数不为0时就进行复制 ， 到字节数为0时就停止while循环
//	{
//		*(char*)dest = *(char*)src;
//		dest = (char*)dest + 1;
//		src = (char*)src + 1;
//	}
//	return ret;
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	void * ret = my_memcpy(arr2, arr, 40);
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//	return 0;
//}



//二：
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	memmove(arr + 2, arr, 20);
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//} 

//void* my_memmove(const void* dest, const void* src, size_t num)
//{
//	assert(dest && src);
//	void* ret = dest;
//	if (dest < src) // 情况1
//	{
//		while (num--)
//		{
//			*(char*)dest = *(char*)src;
//			dest = (char*)dest + 1;
//			src = (char*)src + 1;
//		}
//	}
//	else //情况2和3
//	{
//		while (num--)
//		{
//			*((char*)dest + num) = *((char*)src + num);
//	}
//
//	}
//	return ret;
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	void* ret = my_memmove(arr+2 , arr, 20);
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ",arr[i]);
//	}
//	return 0;
//
//}



//int main()
//{
//	char str[] = "hello Marki";
//	memset(str, 'x', 6);
//	printf(str);
//	return 0;
//}


int main()
{
	char buffer1[] = "ABcdef";
	char buffer2[] = "ABCDEF	";
	int n;
	n = memcmp(buffer1, buffer2, sizeof(buffer1));
	if (n > 0)
		printf("'%s'，>'%s'.\n", buffer1, buffer2);
	else if (n < 0)
		printf("'%s' <'%s'.\n", buffer1, buffer2);
	else
		printf("'%s' =='%s'⼀样.\n", buffer1, buffer2);
	return 0;
}